random库随机数产生原理
1 | graph LR |
库函数详解(21个)
- 基本随机函数(4个):seed(),getstates(),setstate(),random()
- 扩展随机函数(6个):randint(),getrandbits(),randrange(),choice(),shuffle(),sample()
- 分布随机函数(11个):uniform(),triangular(),betavariate(),expovariate(),gammavariate(),gauss(),lognormvariate(),normalvariate(),vonmisesvariate(),paretovariate(),weibullvariate()
| 基本随机函数 | 描述 |
|---|---|
| seed(a=None, version=2) | 初始化给定的随机数种子。a为可哈希对象,缺省为当前时间,a为整数时回用到所有的位。 |
| getstate() | 返回随机数生成器内部状态(三元组) |
| setstate(state) | 设置随机数生成器内部状态,该状态从getstate()函数获得 |
| random() | 返回一个[0.0,1.0)之间的随机小数 |
| 扩展随机函数 | 描述 |
|---|---|
| randint(a,b) | 生成一个[a,b]之间的整数 |
| randrange(m, n[, k]) | 生成一个[m, n)之间以k为步长的随机整数 |
| getrandbits(k) | 生成一个k比特长的随机整数 |
| choice(seq) | 挑选。从序列seq中随机选择一个元素 |
| suffle(seq) | 洗牌。将序列seq打乱顺序,原序列被修改 |
| sample(p, k) | 抽样。从序列或集合p中随机选择k个元素,原对象不变 |
| 分布随机数 | 描述 |
|---|---|
| uniform(a,b) | 采用等概率分布,生成一个[a, b]之间的随机小数 |
| triangular(low, high, mode) | 采用三角分布(辛普森分布),生成一个[low, high]之间的随机小数 |
| betavariate(alpha, beta) | 采用beta分布,生成一个[0, 1]之间的随机小数 |
| expovariate(lambda) | 采用指数分布,生成一个(0,∞)之间的随机整数 |
| gammavariate(alpha, beta) | 采用gamma分布,生成一个随机小数 |
| gauss(mu, sigma) | 采用高斯分布,生成一个随机小数 |
| lognormvariate(mu, sigma) | 采用对数正态分布,生成一个随机小数 |
| normalvariate(mu, sigma) | 采用正态分布,生成一个随机小数 |
| vonmisesvariate(mu, kappa) | 采用冯米塞斯分布,生成一个随机小数 |
| paretovariate(alpah) | 采用帕累托分布,生成一个随机小数 |
| weibullvariate(alpha, beta) | 采用韦伯分布,生成一个随机小数 |
1 | >>>from random import * |
1 | import random |